import logging

"""
# 示例1：全局logging
logging.basicConfig(level=logging.ERROR)

# 等级制度按以下顺序排列，在下面的都会被打印
logging.debug('This is a debug message')
logging.info('This is a info message')
logging.warning('This is a warning message')
logging.error('This is a error message')
logging.critical('This is a critical message')
"""

"""
# 示例2：⾃定义logger并输出到控制台
logging.basicConfig(level=logging.INFO)
# 这行代码做了两件事：
# 1. 设置根记录器(root logger)的级别为INFO
# 2. 自动创建一个StreamHandler并附加到根记录器
# 这里如果把不添加logging.basicConfig(level=logging.INFO)
# 记录器的日志级别到根处理器的时候，由于级别可能比根记录器的日志级别低，会被过滤掉，所有才导致设置了记录器等级但是没生效
# 解决方法：
# 1. 保留这行代码
# 2. 手动创建处理器
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)  # 处理器也设置为DEBUG级别
logger.addHandler(handler)
# 3. 设置根记录器级别
logging.getLogger().setLevel(logging.DEBUG)

# 获取一个日志记录器对象，名称为当前模块的名称
logger = logging.getLogger("my_logger")

# 设置日志记录器的级别为DEBUG
# 意味着所有级别为DEBUG及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

if __name__ == '__main__':
    logger.debug('This is a debug message')
    logger.info('This is a info message')
    logger.warning('This is a warning message')
    logger.error('This is a error message')
    logger.critical('This is a critical message')
"""

"""
# 示例3：⾃定义logger并输出到⽇志⽂件
logging.basicConfig(level=logging.INFO)

# 获取一个日志记录器对象，名称为当前模块的名称
logger = logging.getLogger("my_logger")

# 设置日志记录器的级别为DEBUG
# 意味着所有级别为DEBUG及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

# 创建一个FileHandler对象，指定日志文件名称为“test.log”
# 这个处理器会将日志信息输入到指定文件
handler = logging.FileHandler(filename='test.log')

# 将这个处理器添加到日志记录对象中
# 这样日志记录器就会使用这个处理器来出来日志信息
logger.addHandler(handler)

if __name__ == '__main__':
    logger.debug('This is a debug message')
    logger.info('This is a info message')
    logger.warning('This is a warning message')
    logger.error('This is a error message')
    logger.critical('This is a critical message')
"""

"""
# 示例4：设置日志格式
logging.basicConfig(level=logging.INFO)

# 获取一个日志记录器对象，名称为当前模块的名称
logger = logging.getLogger("my_logger")

# 设置日志记录器的级别为DEBUG
# 意味着所有级别为DEBUG及以上的日志都会被记录
logger.setLevel(logging.DEBUG)

# 创建一个FileHandler对象，指定日志文件名称为“test.log”
# 这个处理器会将日志信息输入到指定文件
handler = logging.FileHandler(filename='test.log')

# 将这个处理器添加到日志记录对象中
# 这样日志记录器就会使用这个处理器来出来日志信息
logger.addHandler(handler)

# 创建一个日志格式器对象
formatter = logging.Formatter('%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s')
# 将日志格式器添加到日志记录器
handler.setFormatter(formatter)

if __name__ == '__main__':
    logger.debug('This is a debug message')
    logger.info('This is a info message')
    logger.warning('This is a warning message')
    logger.error('This is a error message')
    logger.critical('This is a critical message')
"""